МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет “Львівська політехніка”
СТРУКТУРИ ТА ОБ’ЄДНАННЯ В МОВІ ПРОГРАМУВАННЯ С
Інструкція
до лабораторної роботи № 7
з курсу “Проблемно-орієнтовані мови програмування”
для студентів базового напрямку 6.08.04
"Комп’ютерні науки"
ЗАТВЕРДЖЕНО
на засіданні кафедри
Системи автоматизованого проектування
Протокол № від р.
ЛЬВІВ 2007
Структури та об’єднання в мові програмування С. Інструкції до лабораторної роботи № 7 з курсу “Проблемно-орієнтовані мови програмування” для студентів базового напрямку 6.08.04 "Комп’ютерні науки“ /Укл. С. І. Бобало, В. І. Каркульовський, І. І. Чура, -Львів: ДУ “ЛП”, 1999 р.- с.
Укладачі С. І. Бобало, доц.,
В. І. Каркульовський, канд.техн.наук, доц.
І. І. Чура, канд.техн.наук, доц.
М. І. Андрійчук, канд. ііз.-мат. наук, доц.
Відповідальний за випуск С. П. Ткаченко, канд.техн.наук, доц.
Рецензенти М. В. Лобур, доктор техн.наук,
І. І. Мотика, канд.техн.наук
1. МЕТА РОБОТИ
Мета роботи - навчитися використовувати структури та об’єднання для програмування на мові С.
2. ТЕОРЕТИЧНІ ВІДОМОСТІ
Структура.
Структура - це набір з однієї або більше змінних, можливо різних типів, згрупованих під одним ім'ям для зручності обробки. (У деяких мовах, наприклад Паскаль, структури називаються “записами”).
Розглянемо приклад. Уявіть собі, що на календарі сьогодні 1 січня 2007 року. Дата складається з складових таких, як день, рік та назва місяця. Ці три змінні можна об’єднати в одну структуру вигляду:
struct DATE {
int day;
int year;
char mon_name[4];
};
Опис структури, що складається з взятого в фігурні дужки списку полів, починається з ключового слова struct. Після слова struct пишеться ім'я, так звана Мітка структури (тут це DATE). Ім’я може бути відсутнє. Така мітка іменує структури цього виду і може використовуватися надалі як скорочений запис детального опису. Елементи або змінні, згадані в структурі, називаються членами (полями, компонентами). Мітки і члени структур можуть мати такі ж імена, що і звичайні змінні (тобто ті, що не є членами структур), оскільки їх імена завжди можна розрізнити по контексту. Звичайно однакові імена присвоюють тільки тісно пов'язаним об'єктам.
Точно так само, як у разі будь-якого іншого базового типу, за правою фігурною дужкою, що закриває список членів, може записуватись список змінних.
Оператор
struct { } x, y, z; // описує struct { }
синтаксично аналогічний
int x, y, z; // описує int
в тому сенсі, що кожен з операторів описує x, y та z в якості змінних відповідних типів і приводить до виділення для них пам’яті.
Опис структури, за яким не має списку змінних, не приводить до виділення пам'яті (немає змінної); воно тільки визначає шаблон або форму структури. Але, якщо в такому опису є мітка, то ця мітка може бути використана пізніше при визначенні фактичних примірників структур. Наприклад, якщо дано приведений вище опис Date, то struct DATE d; визначає змінну d як структура типу Date.
Операція вказівника на член структури "." зв'язує ім'я структури та ім'я члена. Наприклад:
d.day = 1;
d.year = 2000;
d.mon_name = “січ”;
В програмі це може бути реалізовано наступним чином.
#include <stdio.h>
#include <string.h> // strcpy()
struct DATE {
int day;
int year;
char mon_name[4];
};
int main(void)
{
struct DATE d;
// заповнимо структуру датою 1 січня 2000 року
d.day = 1;
d.year = 2000;
strcpy(d.mon_name, “січ”);
// виведемо на екран монітора цю дату
printf(“\nDate - %d %s %d\n”, d.day, d.mon_name, d.year);
return 0;
}
Результатом виконання програми буде напис : Date - 1 січ 2000.
Структури можуть бути вкладеними. Для прикладу наведемо структуру STUDENT:
struct STUDENT {
char name[25];
char address[40];
long int zipcode; // поштовый индекс
long int st_number; // номер студ. квитка
double scholarship; // стипендія
int course; // курс
char group[7]; // група
struct DATE birthdate; // дата народження
struct DATE heredate; // да...